package com.example.configuration;

//import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import org.apache.http.entity.ContentType;
import java.io.*;

public class FileUtils {

    // 定义常量代替枚举
    private static final String TEMPLATE_DIR = "russiaEngine/";
    private static final String CONTROL_PLAN_DIR = "control/";

    /**
     * MultipartFile转File
     * @param multipartFile 要转换的MultipartFile对象
     * @return 转换后的File对象
     */
    public static File MultipartFileToFile(MultipartFile multipartFile) {
        // 文件上传前的名称
        String fileName = multipartFile.getOriginalFilename();

        // 新建文件夹（使用常量代替枚举）
        File tempFile = new File(TEMPLATE_DIR);

        // 判断文件夹是否存在
        if (!tempFile.exists()) {
            tempFile.mkdirs();
        }

        File file = new File(tempFile + File.separator + fileName);
        OutputStream out = null;

        try {
            out = new FileOutputStream(file);
            byte[] ss = multipartFile.getBytes();
            out.write(ss); // 优化：直接写入整个字节数组
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return file;
    }

    /**
     * File转MultipartFile
     * @param file 要转换的File对象
     * @return 转换后的MultipartFile对象
     */
//    public static MultipartFile getMultipartFile(File file) {
//        FileInputStream fileInputStream = null;
//        MultipartFile multipartFile = null;
//
//        try {
//            fileInputStream = new FileInputStream(file);
//            multipartFile = new MockMultipartFile(
//                    file.getName(),
//                    file.getName(),
//                    ContentType.APPLICATION_OCTET_STREAM.toString(),
//                    fileInputStream
//            );
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            if (fileInputStream != null) {
//                try {
//                    fileInputStream.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//        return multipartFile;
//    }

    /**
     * 删除文件
     * @param directoryPath 目录路径
     * @param fileName 文件名
     */
    public static void deleteFile(String directoryPath, String fileName) {
        File directory = new File(directoryPath);

        // 检查目录是否存在
        if (!directory.exists()) {
            System.out.println("目录不存在：" + directoryPath);
            return;
        }

        // 检查目录是否是一个文件夹
        if (!directory.isDirectory()) {
            System.out.println("指定的路径不是一个目录：" + directoryPath);
            return;
        }

        File file = new File(directory, fileName);

        // 检查文件是否存在
        if (!file.exists()) {
            System.out.println("文件不存在：" + fileName);
            return;
        }

        // 删除文件
        if (file.delete()) {
            System.out.println("成功删除文件：" + fileName);
        } else {
            System.out.println("无法删除文件：" + fileName);
        }
    }

    /**
     * 获取控制计划照片文件
     * @param url 文件相对路径
     */
    public static void getPhoto(String url) {
        // 使用常量代替枚举
        File photoFile = new File(CONTROL_PLAN_DIR + File.separator + url);
    }

    /**
     * 删除文件
     * @param tempFile 要删除的文件对象
     */
    public static void DeleteFile(File tempFile) {
        if (tempFile != null && tempFile.exists()) {
            if (tempFile.delete()) {
                System.out.println("成功删除文件：" + tempFile.getAbsolutePath());
            } else {
                System.out.println("无法删除文件：" + tempFile.getAbsolutePath());
            }
        }
    }
}